<?php
/*
 * Copyright (c) 2008 Carlos Romel Pereira da Silva <carlos.romel@gmail.com>
 * Copyright (c) 2008 Jo�o Paulo Cirino Silva de Novais <joaopaulonovais@gmail.com>
 *
 * Controller
 *
 * Design pattern: Command
 */

class Ficha {

    /*
     * Esse m�todo � o respons�vel por orquestrar as a��es das classes de vis�o
     * e dados.
     */
    static function executar() {

        $acao      = isset($_REQUEST["acao"])? $_REQUEST["acao"]: null;
        $campo     = isset($_REQUEST["campo"])? $_REQUEST["campo"]: null;
        $descricao = isset($_REQUEST["descricao"])? $_REQUEST["descricao"]: null;
        $visao     = new FichaView("modelo/ficha.html",
                                   $campo,
                                   $descricao);

        $tiposEscolaridade = Tipo_escolaridadeDAO::consultar();
        $tiposProfissao    = Tipo_profissaoDAO::consultar();

        $ficha             = Array();
        $ficha_andamento   = Array();

        $ficha["cod_ficha"]               = isset($_REQUEST["cod_ficha"])? $_REQUEST["cod_ficha"]: null;
        $ficha["cod_secretariado"]        = isset($_REQUEST["cod_secretariado"])? $_REQUEST["cod_secretariado"]: null;
        $ficha["cod_pessoa_apresentante"] = isset($_REQUEST["cod_pessoa_apresentante"])? $_REQUEST["cod_pessoa_apresentante"]: null;
        $ficha["cod_pessoa_candidato"]    = isset($_REQUEST["cod_pessoa_candidato"])? $_REQUEST["cod_pessoa_candidato"]: null;
        $ficha["num_ficha"]               = isset($_REQUEST["num_ficha"])? $_REQUEST["num_ficha"]: null;
        $ficha["nom_pai"]                 = isset($_REQUEST["nom_pai"])? $_REQUEST["nom_pai"]: null;
        $ficha["nom_mae"]                 = isset($_REQUEST["nom_mae"])? $_REQUEST["nom_mae"]: null;
        $ficha["cod_movimento_cristao"]   = isset($_REQUEST["cod_movimento_cristao"])? $_REQUEST["cod_movimento_cristao"]: null;
        $ficha["cod_tipo_escolaridade"]   = isset($_REQUEST["cod_tipo_escolaridade"])? $_REQUEST["cod_tipo_escolaridade"]: null;
        $ficha["nom_instituicao"]         = isset($_REQUEST["nom_instituicao"])? $_REQUEST["nom_instituicao"]: null;
        $ficha["nom_curso"]               = isset($_REQUEST["nom_curso"])? $_REQUEST["nom_curso"]: null;
        $ficha["cod_tipo_profissao"]      = isset($_REQUEST["cod_tipo_profissao"])? $_REQUEST["cod_tipo_profissao"]: null;
        $ficha["nom_empresa"]             = isset($_REQUEST["nom_empresa"])? $_REQUEST["nom_empresa"]: null;
        $ficha["txt_observacao"]          = isset($_REQUEST["txt_observacao"])? $_REQUEST["txt_observacao"]: null;

        $ficha_andamento["cod_pessoa_responsavel"] = isset($_SESSION["cod_pessoa_secretariado"])? $_SESSION["cod_pessoa_secretariado"]: null;

        $visao->setTiposEscolaridade($tiposEscolaridade);
        $visao->setTiposProfissao($tiposProfissao);

        switch ($acao) {

            case "Gravar":

                if (! is_null($ficha["cod_ficha"])) {

                    FichaDAO::alterar($ficha);
                } else {

                    $ficha_andamento["cod_ficha"] = FichaDAO::inserir($ficha);
                    $ficha_andamento["cod_ficha_situacao"] = 1; //Em elabora��o
                    Ficha_andamentoDAO::inserir($ficha_andamento);
                }

                $registros = FichaDAO::consultar();
                $resultado = $visao->consultar($registros);

                break;

            case "Remover":

                if (! is_null($ficha["cod_ficha"])) {

                    FichaDAO::remover($ficha);
                }

                $registros = FichaDAO::consultar();
                $resultado = $visao->consultar($registros);

                break;

            case "Aprovar":

                if (! is_null($ficha["cod_ficha"])) {
                    /*
                    * TODO: Para Não se fixar o c�digo da situa��o, pode-se pensar em uma flag,
                    * indicando o tipo da situa��o (A, I ou P). Verificar se Não haver� mais de
                    * uma situa��o ativa, por exemplo.
                    */
                    $ficha_andamento["cod_ficha_situacao"] = 2; //Aprovada
                    Ficha_andamentoDAO::inserir($ficha_andamento);
                }

                $registros = FichaDAO::consultar();
                $resultado = $visao->consultar($registros);

                break;

            case "Cancelar":

                if (! is_null($ficha["cod_ficha"])) {

                    $ficha_andamento["cod_ficha_situacao"] = 3; //Cancelada
                    Ficha_andamentoDAO::inserir($ficha_andamento);
                }

                $registros = FichaDAO::consultar();
                $resultado = $visao->consultar($registros);

                break;

            case "Consultar":

                $registros = FichaDAO::consultar($ficha);

                if (! DB::isError($registros)) {

                    $resultado = $visao->consultar($registros);
                }

                break;

            default: // $acao == "Editar"

                if (! is_null($ficha["cod_ficha"])) {

                    $registros = FichaDAO::consultar($ficha);

                    if (! DB::isError($registros)) {

                        $registro = $registros[0];
                    }
                } else {

                    $registro = $ficha;
                }

                $resultado = $visao->editar($registro);
        }

        return $resultado;
    }
}

?>
